package org.patterns.structural.facade;


/**
 * 加密外观类，它继承自AbstractEncryptFacade抽象类
 * 这个类负责协调文件读取、加密和写入的过程，但不涉及具体的加密算法实现
 */
public class NewEncryptFacade extends AbstractEncryptFacade {

    // FileReader对象，用于读取源文件内容
    private FileReader reader;
    // NewCipherMachine对象，用于对读取的文件内容进行加密
    private NewCipherMachine cipher;
    // FileWriter对象，用于将加密后的文件内容写入目标文件
    private FileWriter writer;

    /**
     * 构造方法初始化文件读取器、加密器和文件写入器
     */
    public NewEncryptFacade() {
        reader = new FileReader();
        cipher = new NewCipherMachine();
        writer = new FileWriter();
    }

    /**
     * 加密文件方法，将源文件内容加密后写入目标文件
     *
     * @param fileNameSrc  源文件名，包含待加密的内容
     * @param fileNameDes  目标文件名，加密内容将写入此文件
     */
    public void fileEncrypt(String fileNameSrc, String fileNameDes) {
        // 从源文件中读取待加密的字符串
        String plainStr = reader.read(fileNameSrc);
        // 使用加密机器对读取的字符串进行加密
        String encryptStr = cipher.encrypt(plainStr);
        // 将加密后的字符串写入目标文件
        writer.write(encryptStr, fileNameDes);
    }
}
